// 卡特兰数
// 将排列看成走路径
// 例如从(0,0)走到(6,6)的过程中纵坐标不能超过横坐标
// 这种情况经过堆成都能走到(5,7)
// 方案数为c(2n,n) - c(2n, n - 1) = c(2n, n) / (n + 1)
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 100010;
const int mod = 1e9 + 7;

// 由于取模的数是个质数，所以可以用快速幂求逆元
int qmi(int a, int k, int p)
{
    int res = 1 % p;
    while (k)
    {
        if (k & 1)
            res = (LL)res * a % p;
        a = (LL)a * a % p;
        k >>= 1;
    }
    return res;
}

int main()
{
    int n;
    cin >> n;
    int res = 1;
    for (int i = 1, j = 2 * n; i <= n; ++i, --j)
    {
        res = (LL)res * j % mod;
        res = (LL)res * qmi(i, mod - 2, mod) % mod;
    }
    res = (LL)res * qmi(n + 1, mod - 2, mod) % mod;
    cout << res << endl;
    return 0;
}